﻿// Decompiled with JetBrains decompiler
// Type: Microsoft.InfoCards.SendAgentStatusRequest
// Assembly: infocard, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: 8E14765A-6610-409A-BA36-099A0642905D
// Assembly location: E:\git\ALLIDA\windll\infocard.exe

using Microsoft.InfoCards.Diagnostics;
using System;
using System.IO;
using System.Text;

namespace Microsoft.InfoCards
{
  internal class SendAgentStatusRequest : UIAgentRequest
  {
    private SendAgentStatusRequest.AgentStatusType m_agentStatus;
    private bool m_retVal;
    private uint m_ATApplicationsFlags;

    public SendAgentStatusRequest(
      IntPtr rpcHandle,
      Stream inArgs,
      Stream outArgs,
      ClientUIRequest parentRequest)
      : base(rpcHandle, inArgs, outArgs, parentRequest)
    {
    }

    protected override void OnMarshalInArgs()
    {
      InfoCardTrace.Assert(this.InArgs.Length > 0L, "The agent status must be specified");
      BinaryReader binaryReader = (BinaryReader) new InfoCardBinaryReader(this.InArgs, Encoding.Unicode);
      this.m_agentStatus = (SendAgentStatusRequest.AgentStatusType) binaryReader.ReadUInt32();
      this.m_ATApplicationsFlags = binaryReader.ReadUInt32();
    }

    protected override void OnProcess()
    {
      this.m_retVal = false;
      switch (this.m_agentStatus)
      {
        case SendAgentStatusRequest.AgentStatusType.AGENT_DESKTOP_CREATED:
        case SendAgentStatusRequest.AgentStatusType.AGENT_DESKTOP_SWITCH_IN:
          this.ParentRequest.StartAccessibilityApplications(this.m_ATApplicationsFlags);
          break;
        case SendAgentStatusRequest.AgentStatusType.AGENT_DESKTOP_SWITCH_OUT:
          this.m_retVal = this.ParentRequest.RestartAccessibilityApplications();
          break;
      }
    }

    protected override void OnMarshalOutArgs()
    {
      new BinaryWriter(this.OutArgs, Encoding.Unicode).Write(this.m_retVal);
    }

    public enum AgentStatusType
    {
      AGENT_INITIALIZING,
      AGENT_DESKTOP_CREATED,
      AGENT_DESKTOP_SWITCH_OUT,
      AGENT_DESKTOP_SWITCH_IN,
      AGENT_SHUTTING_DOWN,
    }
  }
}
